
package org.upm;

/**
 * Clase que gestiona la poblacion de usuarios registrados en el sistema.
 * Una mejora sería que la clase obtuviera esta población a partir de una base de datos.
 *
 * @author Jonathan Gonzalez
 * @version 09/03/2009
 */
public class Poblacion {

		Tarifa yoigo_0_yoigo = new Tarifa("Las del 0", "Yoigo", 0, 0, 0, "Yoigo");
		Tarifa yoigo_8_vodafone = new Tarifa("Las del 8", "Yoigo", 8, 8, 8, "Vodafone");
		Tarifa vodafone_manana_orange = new Tarifa("Contrato Mañana", "Vodafone", 49, 15, 49, "Orange");
		Tarifa vodafone_normal_yoigo = new Tarifa("Contrato Normal", "Vodafone", 18, 18, 18, "Yoigo");
		Tarifa movistar_tiempolibre_orange = new Tarifa("Contrato Tiempo Libre", "Movistar", 30, 8, 8, "Orange");
		Tarifa movistar_unico_yoigo = new Tarifa("Contrato Único", "Movistar", 23, 23, 23, "Yoigo");
		Tarifa orange_unico_movistar = new Tarifa("Nuevo Contrato Único", "Orange", 17, 17, 17, "Movistar");
		Tarifa orange_tiempolibre_orange= new Tarifa("Mi Tiempo Libre", "Orange", 30, 7, 7, "Orange");
		
		
		Usuario pedro = new Usuario("Pedrito", "Hombre", 25 , "Movistar", movistar_tiempolibre_orange);
        Usuario manuel = new Usuario("Manuel", "Hombre", 26 , "Movistar", movistar_unico_yoigo);
        Usuario laura = new Usuario("Laura", "Mujer", 22 , "Orange", orange_unico_movistar);
        Usuario lucia = new Usuario("Lucia", "Mujer", 5 , "Orange", orange_tiempolibre_orange);
        Usuario pablo = new Usuario("Pablo", "Hombre", 65 , "Vodafone", vodafone_manana_orange);
        Usuario adela = new Usuario("Adela", "Mujer", 69 , "Vodafone", vodafone_normal_yoigo);
        Usuario mario = new Usuario("Mario", "Hombre", 37 , "Yoigo", yoigo_0_yoigo);
        Usuario rocio = new Usuario("Rocio", "Mujer", 22 , "Yoigo", yoigo_8_vodafone);
        //Población del sistema
    Object[] poblacion = { pedro, manuel, laura, lucia, pablo, adela, mario, rocio };

        /**
         * Constructor sin parámetros de la clase
         */
        Poblacion(){
        }

        /**
         * Método que devuelve la población de usuarios registrados en un sistema.
         *
         * @return Object[] poblacion - Poblacion de usuarios del sistema.
         */
        public Object[] damePoblacion(){
                return poblacion;
        }

        /**
         * Método que devuelve el originador de una llamada.
        *
        * @return llamante - Originador de la llamada
        */
       public Usuario dameLlamante(){
               double aleatorio = Math.random() * 8;
               int usuario = (int) aleatorio;
               return (Usuario) poblacion[usuario];
       }

       public Usuario getDestinatario(Usuario llamante){
               double aleatorio = Math.random() * 8;
               int usuario = (int) aleatorio;
               Usuario tmp = (Usuario) poblacion[usuario];
               while( tmp.getNombre().equals(llamante.getNombre()) ){
                       aleatorio = Math.random() * 8;
                       usuario = (int) aleatorio;
                       tmp = (Usuario) poblacion[usuario];
               }
               System.out.println(llamante.getNombre() + " llama a " + tmp.getNombre());
               llamante.setDestinatario((Usuario) poblacion[usuario]);
               return (Usuario) poblacion[usuario];
       }

}
